import java.util.Scanner;

public class Menu {
	public Menu() {
		Scanner sc = new Scanner(System.in);
		int stav = 0;
		System.out
				.println("\nDobry den, vitejte v simulaci Rozvozu piva z pivovaru Chemokvas \n Autori: Jiri Matyas, Lukas Polivka");
		while (!(stav == 4)) {
			System.out
					.println("\nPro manualni zadani objednavky stisknete:        1");
			System.out
					.println("Pro sledovani kamionu stisknete:                 2");
			System.out
					.println("Pro sledovani hospody (stavu zasob) stisknete:   3");
			System.out
					.println("Pro start simulace stisknete                     4");
			System.out.print("- ");
			stav = sc.nextInt();

			if (stav == 1) {
				System.out.println("Nova objednavka: ");
				String idHospody;
				String objemPiva;
				String hodina;
				System.out
						.println("zadejte id hospody jaka ma byt zasobovana (cislo od 0 do 3999)");
				idHospody = sc.next();
				while (!jeCisloHospody(idHospody)) {
					idHospody = sc.next();
				}
				System.out
						.println("zadejte objem piva ktere ma byt dovezeno (nejlepe cislo od 0 do 6)");
				objemPiva = sc.next();
				while (!jeSpravnyObjem(objemPiva)) {
					objemPiva = sc.next();
				}

				System.out
						.println("zadejte hodinu, kdy ma byt objednavka poslana");
				hodina = sc.next();
				while (!jeSpravnaHodina(hodina)) {
					hodina = sc.next();
				}
				int velPole = Aplikace.hospody.get(Integer.parseInt(idHospody)).cestaDoPrekladiste.length;
				Aplikace.listObjednavek
						.add(new Objednavka(
								Aplikace.hospody.get(Integer
										.parseInt(idHospody)).cestaDoPrekladiste[velPole - 1],
								Integer.parseInt(idHospody), Integer
										.parseInt(objemPiva), Integer
										.parseInt(hodina)));
			} else if (stav == 2) {
				String idKamionu = "-1";
				System.out.println("Zadejte id kamionu, ktery chcete sledovat: [Kamion]:0-71; [Cisterna/NakladniVuz]:72-?");
				idKamionu = sc.next();
				while (!jeIdKamionu(idKamionu)) {
					idKamionu = sc.next();
				}
				Aplikace.sledovanaKamion = Integer.parseInt(idKamionu);
			} else if (stav == 3) {
				String idHospody = "-1";
				System.out
						.println("Zadejte id hospody, ktery chcete sledovat:");
				idHospody = sc.next();
				while (!jeCisloHospody(idHospody)) {
					idHospody = sc.next();
				}
				Aplikace.sledovanaHospoda = Integer.parseInt(idHospody);
			}
		}
		sc.close();

	}

	public static boolean jeCisloHospody(String str) {
		int d;
		try {
			d = Integer.parseInt(str);
		} catch (NumberFormatException nfe) {
			System.out.println("spatny format znovu (cislo od 0 do 3999)");
			return false;
		}
		if (d < 0 || d > 3999) {
			System.out.println("spatny format znovu (cislo od 0 do 3999)");
			return false;
		}
		return true;
	}

	public static boolean jeSpravnyObjem(String str) {
		int d;
		try {
			d = Integer.parseInt(str);
		} catch (NumberFormatException nfe) {
			System.out.println("spatny format znovu (cislo od 1 do 6)");
			return false;
		}
		if (d < 1 || d > 6) {
			System.out.println("spatny format znovu (cislo od 1 do 6)");
			return false;
		}
		return true;
	}

	public static boolean jeSpravnaHodina(String str) {
		int d;
		try {
			d = Integer.parseInt(str);
		} catch (NumberFormatException nfe) {
			System.out.println("spatny format znovu (cislo od 8 do 16)");
			return false;
		}
		if (d < 8 || d > 16) {
			System.out.println("spatny format znovu (cislo od 8 do 16)");
			return false;
		}
		return true;
	}

	public static boolean jeIdKamionu(String str) {
		int d;
		try {
			d = Integer.parseInt(str);
		} catch (NumberFormatException nfe) {
			System.out.println("spatny format znovu (cislo od 0 do "+ Aplikace.listVozidel.size()+")");
			//return false;
			return true;
		}
		if (d < 0 || d > Aplikace.listVozidel.size()) {
			System.out.println("spatny format znovu (cislo od 8 do )"
					+ Aplikace.listVozidel.size());
			//return false;
			return true;
		}
		return true;
	}

}
